O que é padrão regex?
regex caracteres especiais
São caracteres que determinam funções especiais dentro de uma regex. Eles são os blocos de construção de um regex. Por exemplo: [ ] , ^ , ( ) , { } , $ , + , * , etc.7 de ago. de 2020
Expressões Regulares (RegEx) | Réulison Silva
https://reulison.com.br › regex
Sobre trechos em destaque
•
Feedback
As pessoas também perguntam
O que é padrão regex?
Resultado de imagem para regex caracteres especiais - O que é padrão regex?
Uma expressão regular, ou Regex, são padrões utilizados para identificar determinadas combinações ou cadeias de caracteres em uma string. Ela faz parte do dia a dia de todos os programadores e administradores de infra.
RegEx: O que é, Como usar em Palavras e Números | Alura
https://www.alura.com.br › expressoes-regulares
Pesquisar: O que é padrão regex?
O que são classes de caracteres em expressões regulares?
Uma classe de caracteres define um conjunto de caracteres, qualquer dos quais pode ocorrer em uma cadeia de caracteres de entrada para que uma correspondência seja bem-sucedida. A linguagem de expressões regulares no . NET dá suporte às seguintes classes de caracteres: Grupos de caracteres positivos.23 de jun. de 2022
Classes de caracteres em expressões regulares do .NET
https://docs.microsoft.com › pt-br › standard › base-types
Pesquisar: O que são classes de caracteres em expressões regulares?
Qual a função das expressões regulares regex )?
Expressões regulares são padrões utilizados para selecionar combinações de caracteres em uma string. Em JavaScript, expressões regulares também são objetos. Elas podem ser utilizadas com os métodos exec e test do objeto RegExp , e com os métodos match , replace , search , e split do objeto String .22 de fev. de 2022
Expressões Regulares - JavaScript - MDN Web Docs
https://developer.mozilla.org › ... › Guia JavaScript
Pesquisar: Qual a função das expressões regulares regex )?
O que é validação regex?
Um RegEx, ou Expressão Regular, é uma sequência de caracteres que forma um padrão de texto. RegEx pode ser usado para verificar se uma cadeia de caracteres contém o padrão de busca especificado.
Validação RegEx | QuestionPro Base de conhecimento
https://www.questionpro.com › help › regex-validation
Pesquisar: O que é validação regex?
Como fazer um Regex?
Part of a video titled Como usar RegEx? | Expressões Regulares - YouTube
2:02
10:31
Clipe sugerido · 58 segundos
Como usar RegEx? | Expressões Regulares - YouTube
https://www.youtube.com › watch
Pesquisar: Como fazer um Regex?
O que é uma Regex JavaScript?
Uma expressão regular (regular expression ou Regex) é uma sequência de caracteres que forma um padrão de pesquisa. Ao procurar dados em um texto, você pode usar esse padrão de pesquisa para descrever o que está procurando. Uma expressão regular pode ser um único caractere ou um padrão mais complicado.14 de jun. de 2018
Como usar o Regex no JavaScript - MundoJS
https://www.mundojs.com.br › 2018/06/14 › como-usar-o...
Pesquisar: O que é uma Regex JavaScript?
O que significa a expressão regular?
Expressões Regulares são padrões de caracteres que associam sequências de caracteres no texto. Podemos usar expressões regulares para extrair ou substituir porções de texto, bem como, endereço ou link de imagens em uma página HTML, modificar formato de texto ou remover caracteres inválidos.
Sintaxes Básicos em Expressões Regulares - DevMedia
https://www.devmedia.com.br › iniciando-expressoes-reg...
Pesquisar: O que significa a expressão regular?
Como negar uma expressão regular?
Qual a expressão regular deve ser aplicada para o formato correto de um CPF?
Como usar expressão regular no Excel?
Como validar uma string com Regex?
Como validar o CPF no Google Forms?
Como validar CPF em C#?
Como validar CEP com javascript?
Como fazer Regex php?
Como usar Regex em Java?
Como usar Regex em Python?
O que é uma flag JavaScript?
O que é em JavaScript?
Como validar uma string em JavaScript?
O que é um trabalho regular?
O que é trabalhar regularmente?
Feedback
Expressões Regulares - JavaScript - MDN Web Docs
https://developer.mozilla.org › ... › Guia JavaScript
22 de fev. de 2022 — Caracteres especiais utilizados em expressões regulares. ... Note que \1, \2, \n são utilizados na parte correspondente do regex.
Você visitou esta página em 09/07/22.
Sintaxes Básicos em Expressões Regulares - DevMedia
https://www.devmedia.com.br › Artigos › .NET
NET a classe Regex representa uma expressão regular imutável. ... Segue uma breve descrição dos caracteres especiais mais utilizados em expressão regular.
Você visitou esta página em 09/07/22.
RegEx: O que é, Como usar em Palavras e Números | Alura
https://www.alura.com.br › expressoes-regulares
é um caractere especial e significa qualquer caractere. Ou seja, a Regex não interpreta o ponto literalmente e sim faz um match para qualquer *char. *.
Regex: Um guia prático para expressões regulares - Medium
https://medium.com › xp-inc › regex-um-guia-pratico-...
31 de jan. de 2020 — Uma expressão regular é um método formal de se especificar um padrão de texto. Com ela podemos lidar com as seguintes situações: procura; ...
Classes de caracteres em expressões regulares do .NET
https://docs.microsoft.com › pt-br › standard › base-types
23 de jun. de 2022 — MatchCollection matches = Regex.Matches(input, pattern); foreach (Match match in matches) Console.WriteLine($"'{match.
Você visitou esta página em 09/07/22.
Linguagem de expressões regulares – referência rápida
https://docs.microsoft.com › pt-br › standard › base-types
23 de jun. de 2022 — Um padrão tem um ou mais literais de caracteres, operadores ou ... da cadeia de caracteres original e, em seguida, é executado Regex.
Regex caracteres especiais obrigatório - java - Stack Overflow
https://pt.stackoverflow.com › questions › regex-caracte...
1 de dez. de 2018 — Este código exibe true no console quando for um padrão válido, e false para padrões inválidos. Você pode testar esse código no JavaFiddle como ...
2 respostas
· Melhor resposta: Regex Usada Essa regex faz a validação, você pode testa-la aqui: (?=.*[}{,.^?~=+\-_\/*\-+.\|])( ...
Regex - Remoção de Caracteres Especiais C# - Stack Overflow
19 de jul. de 2014
Verificar a existência de caracteres especiais em uma string ...
11 de nov. de 2018
Como validar com regex uma string contendo apenas letras ...
15 de nov. de 2015
Como extrair apenas a última sequência de palavras depois ...
22 de set. de 2021
Mais resultados de pt.stackoverflow.com
Você visitou esta página em 09/07/22.
Expressões regulares: introdução — Mini Tutorial RegEx
http://turing.com.br › material › regex › introducao
O termo em inglês é regular expression de onde vem as abreviações regex e re (o ... é um caractere ou sequência de caracteres com significado especial em ...
Expressões Regulares (RegExp) - Documentação - GoCache
https://docs.gocache.com.br › smart_rules-regexp
RegExp. Expressões regulares, também conhecidas como RegEx ou RegExp são usadas para englobar um padrão de caracteres usando alguns caracteres especiais. Na ...
As pessoas também perguntam
Como validar uma string com Regex?
Como usar Regex em Java?
Como fazer Regex php?
Feedback
Pesquisas relacionadas
regex caracteres especiais javascript
regex espaço em branco
regex caracteres especiais python
regex exemplos
regex para pegar um texto entre
regex javascript
regex documentation
regex qualquer caractere
1
2
3
4
5
6
7
8
9
10
Mais
Brasil
Porto Alegre, RS
- Com base na sua atividade anterior
- Atualizar local
AjudaEnviar feedbackPrivacidadeTermos
**************************************************************************************
Neste artigo eu vou tentar explicar o básico sobre expressões regulares, vou direcionar o conteúdo para o uso no Google Analytics e Tag Manager.
O que são Expressões Regulares?
O que são Metacaracteres?
Tipos de Expressões Regulares
Quais são as vantagens de usar o REGEX no Google Analytics?
Construindo uma expressão regular
Detalhando as Expressões Regulares
Invertendo Regex em JavaScript
Testando as expressões regulares (RegEx)
Muitos profissionais de Ciência de dados, Analistas e Programadores precisam lidar com expressões regulares em algum momento. Essa linguagem exótica é usada para encontrar padrões complexos de texto e pode parecer complicada e intimidadora no início. No entanto, as expressões regulares são uma ferramenta poderosa que requer apenas um pequeno investimento de tempo para aprender.
Expressões Regulares são quase universais, e são capazes de lidar com quase todos os tipos de dados. Várias plataformas de análise de dados e linguagens de programação as suportam, incluindo SQL, Python, R, Alteryx, Tableau, LibreOffice, Java, Scala, .NET e Go. Os principais editores de texto e IDEs, como o Atom Editor, o Notepad ++, o Emacs, o Vim, o Intellij IDEA e o PyCharm também suportam a pesquisa de arquivos com expressões regulares.
E ferramentas conhecidas como: Google Analytics, Tag Manager, Optimizer e muitas outras.
O grande suporte das expressões regulares significa que elas pode ser usadas em quase todos os tipos de sistemas, surpreendentemente elas não têm uma curva de aprendizado muito grande. Se você se encontra escaneando documentos manualmente ou analisando substrings apenas para identificar padrões de texto, talvez seja legal aprender. Especialmente nas áreas de Ciência e Engenharia de dados, elas podem ajudar em muitas tarefas, desde organizar os dados, até qualificá-los e classificá-los.
Neste artigo também irei comentar sobre alguns recursos das expressões regulares para ajudar na grande maioria das tarefas que você pode se deparar.
O que são Expressões Regulares?
Expressões Regulares são usadas para identificar um padrão em uma string. É uma forma matemática usada para calcular e identificar certos caracteres usados para definir padrões numa cadeira de caracteres, também chamadas de strings.
As Expressões Regulares também são conhecidas como regex (regular expressions).
Por exemplo, ^Flor?es$ é uma expressão regular que corresponde as duas strings: flor e flores.
Um regex é composto de caracteres e metacaracteres.
O regex usado neste artigo é para JavaScript.
Se você desejar testar e aprender Expressões Regulares mais a fundo saiba mais neste link.
O que são Metacaracteres?
São caracteres que determinam funções especiais dentro de uma regex. Eles são os blocos de construção de um regex.
Por exemplo: [ ], ^, ( ), { }, $, +, *, etc.
Tipos de Expressões Regulares
Os tipos de sintaxe usadas para construir expressões regulares são chamadas de regex engines (mecanismos de expressão regular), ou seja, são usadas na sua implementação.
Existem muitos tipos de regex engines disponíveis. Os mais populares entre eles são:
PCRE (PHP)
JavaScript
Python
Golang
Cada mecanismo interpreta e suporta diferentes formas de sintaxe e o significado dos metacaracteres pode mudar dependendo do mecanismo de regex que está sendo usado.
O mecanismo de expressão regular no JavaScript define um conjunto específico de caracteres para serem interpretados como “palavras”. Qualquer caractere que não esteja neste conjunto é considerado uma “quebra de palavra”. Este conjunto de caracteres é bastante limitado: consiste apenas no alfabeto romano tanto maiúsculo como minúsculo, digítos decimais, e o caractere underline. Caracteres com acento, tal como “é” ou “ã” são, infelizmente, tratados como “palavras quebradas”.
Portanto, uma expressão regular considerada válida em um regex engine pode não ser considerada válida em outro regex engine. Entendeu?
Sempre que você testar uma regex usando uma ferramenta de teste para regex, terá a opção de selecionar o mecanismo com o qual você deseja testar sua expressão regular:
Ferramenta de testes para expressões regulares
O mecanismo de expressão regular usado pelo Google Analytics e pelo Tag Manager é o JavaScript, você deve sempre selecionar JavaScript para testar suas expressões regulares para o GA/GTM.
Quais são as vantagens de usar o REGEX no Google Analytics?
Existem muitos casos em que expressões regulares são úteis no Google Analytics. Alguns desses casos são:
Configurar uma meta que deve corresponder a várias páginas:
Expressão Regular como meta no Google Analytics
Configurar um funil em que uma etapa deve corresponder a várias páginas
Na verdade, quando você configura um funil, todas as URLs são tratadas como expressões regulares:
Usando expressão regular para criar um funil de meta no Google Analytics
Usando filtros para excluir tráfegos de IPs
De fato, existem muitos filtros que exigem expressões regulares. Grandes empresas geralmente possuem um largo intervalo de endereços IP.
Portanto, para filtrar o tráfego interno da empresa, você precisa especificar um intervalo de IP através de uma regex:
Filtro interno de IP usando Regex
Configurar segmentos personalizados complexos, como os segmentos que podem corresponder a palavras-chave de marca
Segmento Customizado para palavras-chaves no Google Analytics
Nesse segmento acima eu defino todas as buscas que contém apenas 1 palavra, ou seja, uma string.
Entendendo o valor das palavras-chaves de cauda longa
Segmento Customizado para palavras-chave de cauda longa
Na imagem acima conseguimos ver o tráfego separado por número de strings na consulta, ou seja, podemos analisar a profundidade da cauda longa. Para funcionar é necessário excluir as strings (not set), (not provided) ou outras definidas por padrão no Googla Analytics da amostragem na hora de montar o segmento.
Outra dica é você excluir as strings que contenham sua marca (branded search) e criar um outro segmento somente para consultas que contenham o nome de sua marca.
Reescrevendo URLs nos relatórios do Google Analytics
Por exemplo, incluindo o dominio (host) na URI da solicitação: filtro-dominio-uri
Filtro para incluir o nome do host na URI de soliticação
Você também pode reescrever URLs nos relatórios do Google Analytics com o filtro avançado Pesquisar e Substituir.
Ele é útil quando seu website possui URLs dinâmicas muito longas e desagradáveis, e você não consegue descobrir sobre o que trata a página apenas observando a URL.
Por exemplo, com o filtro avançado Pesquisar e substituir, você pode solicitar ao GA que substitua a seguinte URL:
https://www.exemplo.com/produtos/?cat=2341&pid=428
Por:
https://www.exemplo.com/jardim/vasos/
Assim o time de Marketing poderá identificar melhor as áreas do site na hora de criar relatórios.
Filtrar dados baseados em padrões complexos nos relatórios do Google Analytics
Por exemplo, a regex a seguir pode segmentar todo o tráfego de mídias sociais:
twitter\.com|facebook\.com|linkedin\.com|plus\.google\.com|reddit\.com|instagram\.com|youtube\.com|stackoverflow\.com|quora\.com
Filtro avançado usando regex para identificar algumas mídias sociais
Encontrando a origem de SPAM no Google Analytics
Por exemplo, você pode usar a seguinte regex (não é infalível) para filtrar todas as origens de SPAM no relatório Referrals:
127.0.0.1|justprofit.xyz|nexus.search-helper.ru|rankings-analytics.com|videos-for-your-business|adviceforum.info|video—production|success-seo|sharemyfile.ru|seo-platform|dbutton.net|wordpress-crew.net|rankscanner|doktoronline.no|o00.in
Filtro avançado usando regex para identificar alguma origens de SPAMERS
Bloquear origens de SPAM através de um Filtro personalizado no Google Analytics
Se você conseguiu identificar as origens de alguns SPAMERS em seus relatórios você pode bloquear que essas referências para que não sejam contabilizadas nos relatórios do Google Analytics:
Filtro excluindo a referência de spamers no Google Analytics
Usando expressões regulares para criar grupos de conteúdo no Google Analytics
Na imagem podemos usar uma regex na criação de uma grupo de conteúdo para acompanhar uma determinada categoria em um e-commerce.
Usando regex para criar grupos de conteúdo no Google Analytics
Usando expressões regulares para criar agrupamento de canais no Google Analytics
No caso eu posso agrupar os canais parceiros de Link Building, mas também pode ser usado para outros vários propósitos.
Agrupamento de canais usando expressão regular no Google Analytics
Usando expressões regulares para rastrear pesquisas realizadas sem o parâmetro de consulta na URL
Observe a seguinte URL:
https://www.americanas.com.br/busca/tv-65-polegadas-4k
Ao realizar uma busca nas Lojas Americanas o sistema não gera parâmetros de busca na URL, ela gera uma URL totalmente nova.
Você poderia usar a seguinte expressão regular:
\/busca\/(.*)
Regex para selecionar apenas URLs geradas a partir de uma busca
Para analisar todas as buscas seria necessário criar uma variável usando o Tag Manager e enviar para o Google Analytics, mas caso haja interesse eu escrevo sobre isso em um outro artigo.
Quais são as vantagens de usar o REGEX no Tag Manager?
Através de expressões regulares você pode configurar triggers (acionadores ou disparadores) avançados:
Se você quiser ter um Trigger para vários eventos personalizados, poderá usar uma regex com o nome do evento. Aqui, a regex faz distinção entre maiúsculas e minúsculas, portanto, tenha cuidado com os valores inseridos.
Usando regex para criar um “acionador” no Tag Manager
Você pode usar esse Trigger para acionar um evento ou função para criar um Público de perfis compradores no seu e-commerce.
Construindo uma expressão regular
Classe de caracteres
CARACTERE SIGNIFICADO
. (O ponto) corresponde um único caracter qualquer exceto os caracteres de nova linha: \n, \r, \u2028 ou \u2029. Note que a flag MULTILINE m não muda o comportamento do ponto. Então para corresponder um padrão por múltiplas linhas, o conjunto de caracteres [^] pode ser usado, que corresponderá qualquer caractere, incluindo novas linhas. Por exemplo, /.y/ corresponde my e ay, mas não yes, em yes make my day.
\d Corresponde um caractere de dígito no alfabeto (Latim). Equivalente a [0-9]. Por exemplo, /\d/ ou/[0-9]/ corresponde 2 em B2 é o número da suíte.
\D Corresponde qualquer caractere que não é um dígito no alfabeto baseado no Latim. Equivalente a [^0-9]. Por exemplo, /\D/ ou /[^0-9]/ corresponde B em B2 é o número da suíte.
\w Corresponde qualquer caractere alfanumérico do alfabeto baseado no Latim, incluindo o underline. Equivalente a [A-Za-z0-9_]. Por exemplo, /\w/ corresponde a em apple, 5 em $5.28, e 3 em 3D.
\W Corresponde qualquer caractere que não é um alfanumérico do alfabeto baseado no Latim. Equivalente a [^A-Za-z0-9_]. Por exemplo, /\W/ ou /[^A-Za-z0-9_]/corresponde % em 50%.
\s Corresponde um único caractere de espaço em branco, incluindo espaço, tabulação (tab), quebra de página, nova linha (LF) e outros espaços Unicode. Equivalente a: [\f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]. Por exemplo, /\s\w*/ corresponde bar em foo bar.
\S Corresponde um único caractere que não seja um espaço em branco. Equivalente a: [^\f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]. Por exemplo, /\S\w*/ corresponde foo em foo bar.
\t Corresponde uma tabulação.
\r Corresponde uma quebra de linha.
\n Corresponde uma nova linha.
\v Corresponde uma tabulação vertical.
\f Corresponde uma quebra de página.
[\b] Corresponde um carácter backspace. (Não confundir com \b).
\0 Corresponde um caractere NULL. Não coloque outro dígito seguinte a esse.
\cX Onde X é uma letra de A-Z. Corresponde um caractere de controle em uma string. Por exemplo, /\cM/ corresponde control-M em uma string.
\xhh Corresponde o caractere com o valor Unicode hh (dois dígitos hexadecimais).
\uhhhh Corresponde o caractere com o valor Unicode hhhh (quatro dígitos hexadecimais).
\ Para caracteres que são geralmente tratados literalmente, indica que o próximo caractere é especial e NÃO deve ser interpretado literalmente. Por exemplo,/b/ corresponde o caractere b. Colocando uma barra invertida antes do b, ou seja, usando /\b/, o caractere se torna especial, significando corresponder o limite de uma string. Para caracteres que são geralmente tratados especialmente, indica que o próximo caractere NÃO é especial e deve ser interpretado literalmente. Por exemplo, * é um caractere especial que corresponde a 0 ou mais ocorrências do caractere que o precede; por exemplo, /a*/ significa corresponder 0 ou mais ocorrências de a. Para corresponder * literalmente, preceda-o com uma barra invertida; por exemplo, /a\*/ corresponde a*.
Conjunto de caracteres
CARACTERE SIGNIFICADO
[xyz] Um conjunto de caracteres. Corresponde qualquer um dos caracteres cercados. Você pode especificar uma extensão de caracteres usando um hífen. Por exemplo, [abcd] é o mesmo que [a-d]. Eles correspondem o b em banco e o c[cci] em [cci]cortar.
[^xyz] Um conjunto de caracteres negativo ou complementado. Isto é, corresponde qualquer coisa que NÃO esteja cercada nos colchetes. Você pode especificar uma extensão de caracteres usando um hífen. Por exemplo, [^abc] é o mesmo que [^a-c]. Eles inicialmente correspondem n em banco e o em cortar.
Limites
CARACTERE SIGNIFICADO
^ Corresponde o início de uma entrada. Se a flag MULTILINE é utilizada, também corresponde imediatamente após um caractere de quebra de linha. Por exemplo, /^A/ não corresponde o A em an A, mas corresponde o primeiro A em An A.
$ Corresponde o fim de uma entrada. Se a flag MULTILINE é utilizada, também corresponde imediatamente antes de um caractere de quebra de linha. Por exemplo, /o$/ não corresponde o o em cantor, mas corresponde em canto.
\b Corresponde um limite de uma palavra sem espaço, como entre uma letra e um espaço (Não confundir com [\b]). Por exemplo, /\bno/ corresponde o no em de noite e /ly\b/ corresponde o ly em possibly yesterday.
\B: Corresponde a um limite que não inclui palavras sem espaço, como entre duas letras ou entre dois espaços. Por exemplo:
Antes do primeiro caractere de uma string;
Depois do último caractere de uma string;
Entre dois caracteres de uma palavra;
Entre dois caracteres que NÃO contém palavras;
Uma string vazia.
Por exemplo, /\Bte/ corresponde de em de noite, e /on\B/ corresponde on em possivelmente ontem.
Agrupamentos e Back References
CARACTERE SIGNIFICADO
(x) Corresponde x e memoriza o resultado da regex. Esses são chamados parênteses de captura. Por exemplo, /(foo)/ corresponde e memoriza foo em foo bar. A substring correspondida pode ser chamada novamente dos elementos do array resultante [1], …, [n] ou das propriedades predefinidas do objeto RegExp $1, …, $9. Grupos de captura têm uma falta na performance. Se você não necessita que a substring correspondida seja chamada novamente, prefira parênteses de não-captura (veja mais abaixo).
\n Onde n é um número inteiro positivo. Uma referência posterior à última correspondência da substring n em uma expressão regular (contando parênteses esquerdos). Por exemplo, /apple(,)\sorange\1/ corresponde apple, orange, emapple, orange, cherry, peach. Um exemplo mais completo está a seguir nesta tabela.
(?:x) Corresponde x mas não memoriza a correspondência. Esses são chamados parênteses de não-captura. A substring correspondida não pode ser chamada novamente dos elementos do array resultante [1], …, [n] ou das propriedades predefinidas do objeto RegExp $1, …, $9.
Quantificadores
CARACTERE SIGNIFICADO
x* Corresponde o item precedente x zero ou mais vezes. Por exemplo, /assusto*/ corresponde assustoooo em Um fantasma assustooooue assust em Não me assustei, mas não corresponde em Um bode grunhiu.
x+ Corresponde o item precedente x uma ou mais vezes. Equivalente a {1,}. Por exemplo, /o+/ corresponde o o em doce e todos os o em doooooooce.
x? Corresponde o item precedente x nenhuma ou uma vez. Por exemplo, /e?le?/ corresponde o el em angel e o le em angle. Se usado imediatamente após qualquer dos quantificadores *,?, ou { }. Faz o quantificador (coincidindo com o número mínimo de vezes), como oposto ao padrão (correspondendo ao número máximo de vezes). Também usado em asserções lookahead, descritas em (? =), (?!), E (? :) nesta tabela.
x(?=y) Corresponde x apenas se x é seguido por y. Por exemplo, /Jack(?=Sprat)/ corresponde Jack apenas se for seguido por Sprat. /Jack(?=Sprat|Frost)/ corresponde Jack apenas se for seguido por Sprat ou Frost. Porém, nem Sprat nem Frost são partes do resultado da correspondência.
x(?!y) Corresponde x apenas se x NÃO é seguido por y. Por exemplo,/\d+(?!\.)/ corresponde um número apenas se não for seguido por um ponto./\d+(?!\.)/.exec('3.141') corresponde 141, mas não 3.141.
x|y Corresponde ou x ou y. Por exemplo, /verde|vermelha/ corresponde verde emmaçã verde e vermelha em maçã vermelha.
x{n} Onde n é um número inteiro positivo. Corresponde exatamente a ocorrências do item precedente x. Por exemplo, /a{2}/ NÃO corresponde o a em candy, mas ele é todos os a em caandy, e os dois primeiros a em caaandy.
x{n,} Onde n é um número inteiro positivo. Corresponde pelo menos n ocorrências do item precedente de x. Por exemplo, /a{2,}/ NÃO corresponde o a em candy, mas corresponde a todos em caandy e em caaaaaaandy.
x{n,m} Onde n e m são números inteiros positivos. Deve corresponder pelo menos n e no máximo m ocorrências do item precedente de x. Por exemplo, /a{1,3}/ NÃO corresponde nada em cndy, corresponde o a em candy, corresponde os dois a em caandy, e os primeiros três a em caaaaaaandy. Note que quando estiver combinando caaaaaaandy, a correspondência é aaa, mesmo que a string original tenha mais a.
Detalhando as Expressões Regulares
Caractere de Escape \
\ O caractere de escape é usado para determinar como um caractere subsequente será interpretado.
Embora seja apenas um caractere de escape, você pode converter um caractere comum em metacaractere ou transformar um metacaractere meta em um caractere comum.
Por exemplo:
/ tem um significado especial na regex. É usado para marcar o início e o fim de uma expressão regular.
Por exemplo:
var a = /colou?r/;
Se você quiser uma regex para tratar barra como uma barra \ e não como um caractere especial, então você precisa usá-lo junto com o caractere de escape como este: \/
Então, se você quiser isolar a string /shop/ na string /shop/category/men/.
Sua regex deve ser:\/shop
Se você usar a regex /shop, ela não corresponderá à string /shop/category/men/ porque / será tratado como um caractere especial em vez de uma barra.
Outro exemplo:
n é um caractere normal. Mas se você adicionar um caractere de escape antes dele, ele se tornará um metacaractere: \n será um novo caractere.
Então, se você quiser encontrar somente \n na string abcd\n3456.
Sua regex deve ser: \\n
Se você usar a regex abcd\n, não corresponderá à string abcd\n3456 porque \n seria tratado como um caractere especial em vez de um caractere normal.
Outro exemplo:
? É um metacaractere. Para torná-lo em um caractere normal, você precisa adicionar um caractere de escape antes: \?
Então se você quiser corresponder uma string com ponto de interrogação, por exemplo casar?.
Sua regex deve ser: casar\?
Se você usar casar? em uma regex, ela corresponderia somente à casar e não a string casar? pois ? será tratado como metacaractere.
Acento ^
^ = Isso é conhecido como acento circunflexo e é usado para marcar o início de uma expressão regular.
^\/Colou?r = Verifica se há um padrão que comece com /Color ou /Colour.
Exemplo:
/Colour/?proid=3456/review
/Color-red/?proid=3456/review
^\/Nov(ember)? = Verifique se há um padrão que comece com /Nov ou /November. Exemplo:
/November-sales/?proid=3456/review
/Nov-sales/?proid=3456/review
^\/elearning\.html = Procura um padrão que comece com /elearning.html. Exemplo:
/elearning.html/?proid=3456/review
^\/.*\.php = Verifica se há um padrão que comece com qualquer arquivo com a extensão .php. Exemplo:
/elearning.php/color/?proid=3456/review
/games.php/?proid=3456/
/a1.php/color/?proid=3456&gclid=153dwf3533
^\/product-price\.php = Verifica se há um padrão que comece com /product-price.php. Exemplo:
/product-price.php?proid=123&cid=2142
/product-price.php?cid=2142&gclid=442352df
^ também significa NÃO quando usado após um colchete de abertura
[^a] = Verifica se existe algum caractere diferente da letra minúscula a.
Por exemplo: a seguinte regex product-[^a] corresponderá:
/shop/men/sales/product-b
/shop/men/sales/product-c
[^1] = Verifica se existe algum caractere diferente do número 1.
Por exemplo: a regex proid=[^1] corresponderá:
/men/product-b?proid=3456&gclid=153dwf3533
Mas não corresponde a:
/men/product-b?proid=1456&gclid=153dwf3533
[^ab] = Verifica se existe algum caractere diferente das letras minúsculas a e b.
Por exemplo: a seguinte regex location=[^ab] corresponderá:
/shop/collection/prodID=141?location=canada
Mas não corresponde a:
/shop/collection/prodID=141?location=america
/shop/collection/prodID=141?location=bermuda
[^aB] = Verifique se existe algum caractere diferente da letra minúscula a e letra maiúscula B.
[^1B] = Corresponde a qualquer caractere diferente do número 1 e da letra maiúscula B.
[^Dog] = Corresponde a qualquer caractere diferente da seguinte sequência: letra maiúscula D, letra minúscula o e letra minúscula g.
Por exemplo: A seguinte regex location=[^Dog] corresponderá:
/shop/collection/prodID=141?location=canada
/shop/collection/prodID=141?location=denmark
Mas não corresponde a:
/shop/collection/prodID=141?location=Denver
/shop/collection/prodID=141?location=ontario
/shop/collection/prodID=141?location=greenland
[^123b] = Corresponde a qualquer caractere diferente dos seguintes caracteres: número 1, número 2, número 3 e letra minúscula b.
[^1-3] = Corresponde a qualquer caractere diferente do seguinte: número 1, número 2 e número 3.
Por exemplo: a seguinte regex prodID=[^1-3] corresponderá:
/shop/collection/prodID=45321&cid=1313
/shop/collection/prodID=5321&cid=13442
Mas não corresponde:
/shop/collection/prodID=12321&cid=1313
/shop/collection/prodID=2321&cid=1313
/shop/collection/prodID=321&cid=1313
[^0-9] = Verifica se há algum caractere diferente de um número.
Por exemplo: a regex de\/[^0-9] corresponderá a todas as páginas do diretório de/ cujo a string não seja iniciado por um número:
/de/school-london
/de/general/
Mas não corresponde a:
/de/12fggtyooo
[^a-z] = Corresponde a qualquer caractere único que não seja uma letra minúscula.
Por exemplo: a regex de\/[^a-z] corresponderá a todos os diretórios de/ cujo a string não comece com uma letra minúscula:
/de/1london-school
/de/?productid=423543
Mas não corresponde:
/de/school/london
[^A-Z] = Corresponde a qualquer caractere único que não seja uma letra maiúscula.
Dólar $
$ é usado para expressar o fim de uma expressão regular ou o final de uma linha. Por exemplo:
CARACTERE SIGNIFICADO
Colou?r$ Verifica se há um padrão que termine com Color ou Colour.
Nov(ember)?$ Verifica se há um padrão que termine com Nov ou November.
elearning\.html$ Procura um padrão que termine em elearning.html.
\.php$ Procura por um padrão que termine com .php.
product-price\.php$ Verifica se há um padrão que termine com product-price.php.
Colchetes [ ]
[ ] = Este colchete é usado para verificar qualquer caractere único em um conjunto de caracteres especificado entre [ ]. Por exemplo:
CARACTERE SIGNIFICADO
[a] Verifica se existe um único caractere que seja uma letra minúscula “a”.
[ab] Verifica se existe um único caractere que seja uma letra minúscula “a” ou “b”.
[aB] Verifica se existe um único caractere que seja uma letra minúscula “a” ou letra maiúscula “B”.
[1B] Verifica se existe um único caractere que seja um número “1” ou uma letra maiúscula “B”.
[Dog] Verifica se existe um único caractere que pode ser qualquer um dos seguintes caracteres: letra maiúscula “D”, letra minúscula “o” ou letra minúscula “g”.
[123b] Verifica se existe um único caractere que pode ser qualquer um dos seguintes caracteres: número “1”, número “2”, número “3” ou letra minúscula “b”.
[1-3] Verifica se existe um único caractere que pode ser qualquer um dos números 1, 2 e 3.
[0-9] Verifica se existe um único caractere que seja um numeral.
[a-d] Verifica se existe um único caractere que pode ser qualquer uma das seguintes letras minúsculas: “a”, “b”, “c” ou “d”.
[a-z] Verifica se existe um único caractere que seja uma letra minúscula.
[A-Z] Verifica se existe um único caractere que seja uma letra maiúscula.
[A-T] Verifica se há um único caractere que pode ser qualquer letra maiúscula de “A” à “T”.
[home.php] Procure por um único caractere que pode ser qualquer um dos seguintes caracteres: letra minúscula “h”, letra minúscula “o”, letra minúscula “m”, letra minúscula “e”, caractere especial “.” , letra minúscula “p”, letra minúscula “h” ou letra minúscula “p”.
Se você deseja verificar uma letra, independentemente do seu estado (maiúscula ou minúscula), use [a-zA-Z].
Parênteses ( )
( ) = Mais conhecido como parênteses, é usado para selecionar e verificar uma string. Por exemplo:
CARACTERE SIGNIFICADO
(a) Verificar a correspondência da string “a”
(ab) Verificar a correspondência da string “ab”.
(dog) Verificar a correspondência da string “dog”.
(dog123) Verificar a correspondência da string “dog123”.
(0-9) Verificar a correspondência da string “0-9”.
(A-Z) Verificar a correspondência da string “A-Z”.
(a-z) Verificar a correspondência da string “a-z”.
(123dog588) Verificar a correspondência da string “123dog588”.
( ) também é usado para criar e armazenar variáveis. Por exemplo, ^ (.*) $
Ponto de interrogação ?
? É usado para verificar zero (nenhuma ocorrência) ou uma ocorrência do caractere que o precede. Por exemplo:
CARACTERE SIGNIFICADO
[a]? Verifica se existe zero ou uma ocorrência de letra minúscula “a”.
[dog]? Verifica se existe zero ou uma ocorrência das letras minúsculas “d”, “o” ou “g”.
[^dog]? Verifique se existe zero ou uma ocorrência de um caractere que não sejam as letras minúscula “d”, “o” ou “g”.
[0-9]? Verifica se existe zero ou uma ocorrência de um número.
[^a-z]? Verifica se existe zero ou uma ocorrência de um caractere que não seja uma letra minúscula.
^casa?r$ Verifica a ocorrência da string “casa” ou “casar”.
^Nov(ember)28(th)?$ Verifica a ocorrência das seguintes strings “nov 28”, “november 28”, “Nov 28th” e “November 28th”.
? quando usado dentro de uma expressão regular, transforma uma letra ou um conjuntos de letras que o precede em opcional.
Por exemplo, a expressão regular: ^casa?r$ corresponde tanto a “casa” como a “casar”. Da mesma forma, a expressão regular: ^Nov(ember)28(th)?$ corresponde a: “nov 28”, “november 28”, “Nov 28th” e “November 28th”.
Sinal de +
+ É usado para verificar uma ou mais ocorrências do caractere que o precede. Por exemplo:
CARACTERE SIGNIFICADO
[a]+ Verifica uma ou mais ocorrências de letra minúscula “a”.
[dog]+ Verifica uma ou mais ocorrências de letras “d”, “o” ou “g”.
[548]+ Verifica uma ou mais ocorrências de números “5”, “4” ou “8”.
[0-9]+ Verifica um ou mais números.
[a-z]+ Verifica uma ou mais letras minúsculas.
[^a-z]+ Procura por um ou mais caracteres que não sejam letras minúsculas.
[a-zA-z]+ Procura por qualquer combinação de letras maiúsculas e minúsculas.
[a-z0-9]+ Procura por qualquer combinação de letras minúsculas e números.
[A-Z0-9]+ Procura por qualquer combinação de letras minúsculas e números.
[^9]+ Procura por um ou mais caracteres que não sejam o número 9.
Asterisco *
* É usado para verificar qualquer número de ocorrências (incluindo zero ocorrências) do caractere que o precede.
Por exemplo, 31* corresponderia a 3, 31, 311, 3111, 31111 etc.
Ponto .
. É usado para verificar um único caractere (qualquer caractere que possa ser digitado no teclado que não seja um caractere de quebra de linha (\n)).
Por exemplo, a expressão regular: Action ., Scene2 corresponderia:
Action 1, Scene2
Action A, Scene2
Action 9, Scene2
Action &, Scene2
Mas não corresponderia:
Action 10,Scene2
Action AB,Scene2
Barra Vertical |
| Numa expressão regular é interpretado por “OU” na lógica de uma regex. Por exemplo:
(dele|dela) = Verifica a ocorrência da string “dele” ou “dela”.
dele|dela = Verifica a ocorrência da string “dele” ou “dela”.
Por exemplo, a regex dele|dela vai corresponder:
Este é o livro dele
Este é o livro dela
Dele ou Dela
Dela ou Dele
Exclamação !
! – Numa expressão regular é interpretado por “NÃO” na lógica de uma regex. Mas ao contrário de ^ (circunflexo), o ! é usado apenas no início de uma regra ou condição. Por exemplo:
(!abc) = Procura por uma string que não seja a string “abc”.
[!0-9] = Verifica se existe um único caractere que não seja um número.
[!a-z] = Verifica se existe um único caractere que não seja uma letra minúscula.
Sinal de chaves { }
{ } é usado para verificar uma ou mais ocorrências do caractere anterior.
É como o metacaractere +, mas fornece controle sobre o número de ocorrências do caractere que você deseja corresponder na regex.
Por exemplo:
CARACTERE SIGNIFICADO
1{1} Verifica uma ocorrência do caractere “1”. Esta regex corresponderá a string “1”.
1{2} Verifica por duas ocorrências do caractere “1”. Este regex vai corresponder a string “11”.
1{3} Verifica por três ocorrências do caractere “1”. Este regex corresponderá a string “111”.
1{4} Verifica se existe quatro ocorrências do caractere “1”. Este regex corresponderá a string “1111”.
1{1,4} Verifica por 1 a 4 ocorrências do caractere “1”. Esta regex corresponderá a 1,11, 111, 1111.
[0-9]{2} Verifica se há duas ocorrências de um número ou, em outras palavras, verifique se há dois dígitos como, por exemplo, o número “12”.
[0-9]{3} Verifica por 3 ocorrências de um número ou em outras palavras, verifique se há três dígitos como, por exemplo, o número “123”.
[0-9]{4} Verifica se há 4 dígitos como, por exemplo, o número “1234”.
[0-9]{1,4} Procura um número de 1 a 4 dígitos.
[a]{2} Verifica se há duas ocorrências do caractere “a”. Esta regex corresponderá a string “aa”.
[a]{3} Procura por 3 ocorrências do caractere “a”. Este regex corresponderá a string “aaa”.
[a]{4} Verifica se há 4 ocorrências do caractere “a”. Este regex corresponderá s tring “aaaa”.
[a]{1,4} Procura de 1 à 4 ocorrências do caractere “a”. Esta regex corresponderá as strings “a”, “aa”, “aaa”, “aaaa”.
[a-z]{2} Procura por 2 ocorrências de uma letra minúscula. Este regex vai corresponder as strings “aa”,”bb”, “cc” e etc.
[A-Z]{3} Procura por 3 ocorrências de uma letra maiúscula. Este regex vai corresponder as strings “AAA”, “BBB”, “CCC” e etc.
[a-zA-Z]{2} Procura por 2 ocorrências de uma letra (não importando se é maiúscula ou minúscula). Este regex vai corresponder a “aa”, “aA”, “Aa”, “AA” e etc.
[a-zA-Z]{1,4} Procura de uma à 4 ocorrências de uma letra (não importando se é maiúscula ou minúscula). Este regex corresponderá: “aaaa”, “AAAA”, “aAAA”, “AAAa” e etc.
(rock){1} Procura por uma ocorrência da string “rock”. Este regex irá corresponder a: “rock”.
(rock){2} Procurar por duas ocorrências da string “rock”. Este regex corresponderá: “rockrock”.
(rock){3} Procura por 3 ocorrências da string “rock” . Este regex corresponderá: “rockrockrock”.
(rock){1,4} Verifica de 1 à 4 ocorrências da string “rock”. Este regex corresponderá: “rock”, “rockrock”, “rockrockrock”, “rockrockrockrock”.
Espaço em branco ou vazio
Para criar um espaço em branco em uma expressão regular, basta usar um espaço em branco. Por exemplo:
(Chuck Norris) = Irá corresponder a string “Chuck Norris”.
Invertendo Regex em JavaScript
Inverter um regex significa inverter seu significado. Você pode inverter um regex em JavaScript usando lookaheads positivos e negativos.
Use lookahead positivo se quiser corresponder a algo que é seguido por uma outra coisa. Use lookahead negativo**** se quiser corresponder a algo não seguido por uma outra coisa.
Lookahead positivo começa com (?= seguido de).
Lookahead negativo começa com (?! seguido de).
Por exemplo: a regex de\/[^a-z] corresponderá a todas as URLs da pasta de/ cujo nome NÃO comece por uma letra minúscula. Exemplo:
/de/1london-school
/de/?productid=423543
Mas irá corresponder a:
/de/school/london
O inverso desta expressão regular seria: corresponder a todas as URLs na pasta de/ cujo nome começa com uma letra minúscula:
Por exemplo: o regex de\/(?![^a-z]) corresponderá:
/de/school/london
Mas não corresponde:
/de/1london-school
/de/?productid=423543
A Regex do JavaScript suporta apenas lookaheads e não lookbehind. O Google Analytics não suporta lookahead ou lookbehind.
Outros exemplos de Regex
CARACTERE SIGNIFICADO
^(*\.html)$ Verifica qualquer ocorrência de caracteres que precede .html e os armazena em uma variável.
^dog$ Procura a string “dog”.
^a+$ Verifica a ocorrência de uma ou mais letras minúsculas “a”.
^(abc)+$ Verifica uma ou mais ocorrências da string “abc”.
^[a-z]+$ Verifica uma ou mais ocorrências de uma letra minúscula.
^(abc)*$ Verifica qualquer número de ocorrências da string “abc”.
^a*$ Verifica qualquer número de ocorrências da letra minúscula “a”.
Com encontrar todos os arquivos que começam com “elearning” e que têm a extensão de arquivo .html. Regex: ^elearning*\.html$
Como encontrar todos os arquivos PHP. Regex: ^*\.php$
Testando as expressões regulares (RegEx)
Se você se considera iniciante ou experiente no uso de regex, você deve sempre testar suas expressões regulares.
Você pode testar expressões regulares através de:
Extensão cromo do RegExp Tester;
Ferramenta on-line Regex101.com;
O filtro de tabela avançada na interface de relatórios no GA com a opção Regex;
Recurso de visualização do seu segmento personalizado no GA;
Janela de console de depuração do GTM para testar a regex usada em gatilhos e variáveis;
Usando RegExpObject para testar o regex no GTM durante o tempo de execução.
Testando a Regex #1: Extensão chrome RegExp Tester
O RegExp Tester é uma extensão do Chrome usada para criar e validar expressões regulares:
RegExp Tester
Na expressão regular abaixo, o resultado da pesquisa destacada (ou seja, carros usados) é o padrão que corresponde a minha regex.
A função da regex é filtrar dois conjuntos de strings separados por espaço.
RegExp Tester
Veja como usar esse filtro para filtrar keywords de cauda longa no Google Analytics.
Testando a Regex #2: Ferramenta on-line Regex101.com
Regex101.com é uma ferramenta online usada para criar e testar expressões regulares. Confira a interface da ferramenta Regex101:
Regex101 usado para procurar com um conjunto de 3 strings separadas por espaço
Use o “FLAVOR” como JavaScript, pois o Google Analytics aceita a expressão regular POSIX do JavaScript.
Testando a Regex #3: Filtro avançado de relatórios no GA
Você pode criar e testar o regex no Google Analytics usando o filtro avançado na interface de relatórios com a opção Regex:
Filtro avançado no Google Analytics
Testando a Regex #4: pré-visualização do recurso de segmento personalizado no GA
Você pode criar e testar sua regex no Google Analytics usando o recurso de visualização em um segmento personalizado:
Segmento personalizado no Google Analytics
Testando a Regex #5: Janela do console de depuração do GTM
Para o GTM, você pode usar a janela do console de depuração para testar o regex usado em gatilhos e variáveis:
Ferramenta de teste e depuração do Tag Manager
Testando a Regex #6: usando “RegExp” para testar o regex no GTM durante o tempo de execução
RegExp é um objeto da expressão regular que é usado para armazenar uma expressão regular em JavaScript. Por exemplo:
var regex = /^\/search\/(.*)/;
Ou seja: “regex” (usada como uma variável) é um objeto de uma expressão regular que é usado para armazenar a expressão regular /^\/search\/(.*)/.
Métodos .test e .exec do objeto RegExp:
Tanto .test quanto .exec são os métodos do objeto RegExp e são usados com frequência no Tag Manager (Gerenciador de Tags do Google) para testar expressões regulares usando o tempo de execução.
O método .test é usado para testar uma correspondência de uma regex em uma string.
Ele retorna um valor booleano: true se encontrar uma correspondência, caso contrário, retorna false.
Exemplo: RegExpObject.test (string a ser pesquisada)
Por exemplo:
function() {
var regex = /^\/search\/(.*)/;
var pagePath = '/search/enhanced ecommerce tracking/';
if(regex.test(pagePath)
{
var searchTerm = regex.exec(pagePath)[1];
var NewUri = "/search/?s=" + searchTerm;
return NewUri;
}
return false;
}
O método exec (como em regex.exec) também testa uma correspondência em uma string.
Mas ao contrário de test, ele retorna um array[^array] que contém o texto correspondente, se encontrar a correspondência.
[^array]: Array é uma estrutura de dados que armazena uma coleção de elementos de tal forma que cada um dos elementos possa ser identificado por, pelo menos, um índice ou uma chave.
Caso contrário, retorna um null.
Exemplo: RegExpObject.exec (string a ser pesquisada).
O método exec retorna um array de todo o texto correspondente.
Então, para a regex:
^\/search\/(.*)
// e
pagePath = /search/enhanced ecommerce tracking/
regex.exec(pagePath) = [ ‘/search/enhanced ecommerce tracking/’, ‘enhanced ecommerce tracking/’];
regex.exec(pagePath)[0] = [ ‘/search/enhanced ecommerce tracking/’];
regex.exec(pagePath)[1] = [‘enhanced ecommerce tracking/’];
Então é isso! Se você gostou do artigo e achou útil para você, deixe seu comentário abaixo.
***************************************************************************************************
Alura > Cursos de Front-end > Cursos de JavaScript > Conteúdos de JavaScript > Primeiras aulas do curso Expressões regulares: capturando textos de forma mágica
Expressões regulares: capturando textos de forma mágica
Começando com Regex - Começando a aprender Regex com Javascript
Download do projeto
Você pode fazer o DOWNLOAD completo do projeto inicial aqui.
O que é uma Expressão Regular?
Uma expressão regular, ou Regex, são padrões utilizados para identificar determinadas combinações ou cadeias de caracteres em uma string. Ela faz parte do dia a dia de todos os programadores e administradores de infra. Por meio dela, podemos validar a entrada de usuários ou encontrar alguma informação em logs, documentação ou saída de comando. O mais legal é que as Regex são escritas independentes de uma linguagem, como JavaScript ou C#. As expressões são definidas em sua própria linguagem formal e uma vez aprendida, podemos aplicar o conhecimento dentro da linguagem de nossa preferência. Em outras palavras, linguagens como Java, JavaScript, C# e várias outras possuem uma implementação das expressões regulares e sabem interpretá-la.
Neste curso, vamos focar nessa linguagem formal, mas claro, também mostraremos como executá-la nas plataformas diversas.
Onde queremos chegar? Entender, por exemplo, uma Regex assim:
<(img)\s+src="(.+)"(?:>(?:.*)<\/\1>|\s+\/>)
E saber executá-la utilizando a sua linguagem. No último capítulo desse curso mostraremos como executar uma Regex com Java, C#, PHP, Python, Ruby e JavaScript.
Ambiente de execução
Para testar as Regex durante o curso, preparamos uma página HTML e um código JavaScript que interpreta a Regex. Você pode baixar o projeto aqui. Basta extrair o ZIP e abrir o arquivo index.html.
Ao abrir, podemos ver que a página mostra um formulário para executar e testar as regex. Vamos utilizar esse formulário para analisar as expressões.
Repare que já estamos usando um vocabulário focado na Regex. A string que queremos usar na busca, no exemplo da imagem, a string imagem.png é chamada de alvo, ou target. A expressão regular, na imagem .*png, estamos chamando de pattern. Os resultados são os *matches. *
Já estamos aplicando a primeira Regex, estamos procurando algum texto que termine com png. O ponto (.) é um caractere especial e significa qualquer caractere. Ou seja, a Regex não interpreta o ponto literalmente e sim faz um match para qualquer *char. *
O asterisco (*) é outro meta-char com o significado "zero, um ou mais vezes". Ao adicionar o asterisco (*), conseguimos definir a quantidade, por isso ele também é chamado de quantifier. O ponto (.) e asterisco (*) fazem parte dos metacaracteres que veremos durante o curso.
Apresentando o código
Qualquer Regex precisa ser interpretada por meio de uma Regex engine. Esse motor é uma parte de software que processa a expressão, tentando achar o padrão dentro da string dada, devolvendo os resultados. Normalmente a Regex engine faz parte da aplicação maior, para executar uma validação ou busca de uma string.
No nosso caso, usamos uma Regex engine baseada na linguagem JavaScript. No treinamento, veremos ainda como usar expressões regulares em outras linguagens, como Java, C# ou Ruby.
Vamos dar uma olhada na função executaRegex, dentro do arquivo regex.js. Nela criamos o objeto que sabe interpretar a expressão regular. O JavaScript chama esse objeto de RegExp:
var objetoRegex = new RegExp(textoPattern, 'g');
No construtor passamos o pattern, aquilo que colocamos no input Pattern da página index.html. A letra g é uma flag do mundo JavaScript e significa global, para aplicar a regex na string inteira (e não parar no primeiro match) .
Após a inicialização do objeto regex, podemos executá-lo usando o método exec, que recebe como parâmetro o alvo:
while (resultado = objetoRegex.exec(textoTarget)) {
//codigo omitido
}
O método exec devolve um resultado que possui a string match *e outras informações, como a posição/index. *Repare que estamos fazendo um laço sempre pedindo o próximo resultado.
O resto do código do arquivo regex.js se preocupa com a leitura, validação e apresentação dos dados.
Começando com Regex - O nosso primeiro problema
Já vimos um pequeno exemplo de regex e já sabemos que existem metacaracteres (meta-char) que possuem significados especiais, como o ponto (.) ou asterisco (*). No nosso primeiro exemplo para valor, vamos focar no CPF.
Uma tarefa muito comum no dia a dia do desenvolvedor é parsear um arquivo linha a linha, onde cada linha representa um dado ou registro. Há vários tipos de arquivos, e nesse curso vamos usar o exemplo de arquivo CSV, ou Comma-separated Values, por exemplo:
João Fulano,123.456.789-00,21 de Maio de 1993,(21) 3079-9987,Rua do Ouvidor,50,20040-030,Rio de Janeiro
Maria Fulana, 98765432100,11 de Abril de 1995,(11) 933339871,Rua Vergueiro,3185,04101-300,São Paulo
denise teste, 987.654.321.00,28 de Dezembro de 1991,(31)45562712,SCS Qd. 8 Bl. B-50,11,70333-900,Rio Grande
Então, em cada linha temos vários valores separados pela vírgula, por exemplo:
João Fulano,123.456.789-00,21 de Maio de 1093,(21) 3079-9987,Rua Buarque de Macedo,67,22220-232,Rio de Janeiro
Encontrando números
Repare que o segundo valor é um CPF que precisamos extrair dessa linha. Você conhece um CPF e sabe o padrão de caracteres dele, só falta traduzir o seu conhecimento para a linguagem que a regex engine entende!
Um CPF são 9 números, separados em blocos de 3 números por um ponto, mais um hífen e mais dois números. Para representar um número, podemos utilizar uma caracter class, que é um símbolo especial para representar um conjunto de caracteres. No mundo de regex, um número é representado pelo \d.
O primeiro quantifier
Agora queremos que esse número apareça 3 vezes. Já vimos que o asterisco (*) significa 0, 1 ou mais vezes, ou seja, não atende. Queremos exatamente 3 números que podemos definir pela expressão \d{3}.
Dentro das chaves definimos a quantidade que o caractere deve estar presente. Com isso, já podemos encontrar 3 dígitos. Agora vem o "ponto" só que aprendemos que esse caractere possui um significado especial. No entanto queremos procurar o ponto literalmente e não qualquer caractere. Para deixar claro que o ponto deve ser ponto apenas, é preciso escapar o caractere com \. Assim temos:
\d{3}\.
Sabendo disso podemos definir o resto do CPF:
\d{3}\.\d{3}\.\d{3}\-\d{2}
Repare que o usamos um hífen seguido por apenas 2 dígitos.
Classes de caracteres - Entendendo Classes de Caracteres
No último capítulo demos uma introdução às regex e vimos nossa primeira expressão para encontrar um CPF em uma linha de texto. Já criamos uma expressão regular, bastante simples ainda encontrando o CPF:
\d{3}\.\d{3}\.\d{3}-\d{2}
Olhando novamente no nosso arquivo CSV, percebemos que há uma pequena variação da formatação do CPF: 987.654.321.00 e 11122233300.
A nossa regex falha e não "enxerga" esses CPFs. Para fazer ela funcionar, devemos usar o poder das classes de caracteres. Na aula anterior já vimos uma classe predefinida, o \d. Essa classe na verdade é apenas um atalho pra [0-9], ou seja qualquer dígito. Os colchetes definem uma classe de caracteres e nada impede que criemos nossa própria classe.
Repare que na décima segunda posição do CPF pode vir um ponto OU hífen, que podemos declarar com a classe: [.-]. Perceba também que não escapamos o ponto (.), pois dentro dos colchetes o ponto já possui o seu valor literal. Importante também é que a ordem não importa, [.-] e [-.] são a mesma coisa.
Caracteres opcionais
A quantidade de vezes que essa classe de caracteres deve aparecer é definida por um quantifier, por exemplo, como já vimos:
[.-]* - ponto ou hífen zero, uma ou mais vezes.
[.-]{1} - ponto ou hífen uma vez.
No nosso caso [.-] é opcional, pode ter ou não ter, mas uma vez apenas. Dentro da regex, isso é declarado através do meta-char ponto de interrogação (?). O ponto de interrogação (?), que significa zero ou uma vez, é mais um quantifier.
Assim podemos combinar a classe [.-] com o quantifier ?:
[.-]?- ponto ou hífen zero ou uma vez.
Vamos aplicar isso na nossa regex:
\d{3}[.-]?\d{3}[.-]?\d{3}[.-]?\d{2}
Agora sim, os CPFs serão encontrados com ou sem hífen/ponto.
Sabendo disso até podemos reescrever a classe \d (sim \d também é uma classe, já predefinida). Invés de usar \d podemos escrever:
[0123456789]
Ou mais curto:
[0-9]
Só cuidado, o hífen não possui um significado especial e define todos os números de 0 até 9.
Sobre o curso Expressões regulares: capturando textos de forma mágica
O curso Expressões regulares: capturando textos de forma mágica possui 134 minutos de vídeos, em um total de 81 atividades. Gostou? Conheça nossos outros cursos de JavaScript em Front-end, ou leia nossos artigos de Front-end.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Começando com Expressões regulares
Classes de caracteres
Encontrando a posição certa com âncoras
Trabalhando com grupos
O que são grupos?
Ganancioso ou preguiçoso
Usando regex nas diversas linguagens
Aprenda JavaScript acessando integralmente esse e outros cursos, comece hoje!
**************************************************************************************
Expressões Regulares
« Previous
Next »
Expressões regulares são padrões utilizados para selecionar combinações de caracteres em uma string. Em JavaScript, expressões regulares também são objetos. Elas podem ser utilizadas com os métodos exec e test do objeto RegExp, e com os métodos match, replace, search, e split do objeto String. Este capítulo descreve o uso de expressões regulares em JavaScript.
Criando uma Expressão Regular
Há duas maneiras de construir uma expressão regular:
Usando uma expressão literal, que consiste em um padrão fechado entre barras, como o exemplo a seguir:
const re = /ab+c/;
As expressões regulares na forma literal são compiladas quando o script é carregado. Esta forma de construção possui melhor performace quando a expressão regular utilizada é uma constante, ou seja, não muda durante a execução.
Ou chamando o construtor do objeto RegExp:
let re = new RegExp("ab+c");
Usando o construtor, a compilação da expressão regular é realizada em tempo de execução. Use o construtor quando souber que o padrão da expressão regular irá mudar ou quando o padrão for desconhecido, oriundo de outra fonte, uma entrada de usuário por exemplo.
Nota: Se você já está familiarizado com as formas de uma expressão regular, também pode ler o resumo para uma rápida pesquisa de um padrão específico.
Escrevendo um padrão de expressão regular
Um padrão de expressão é composto por um conjunto de caracteres simples, como /abc/, ou uma combinação de caracteres simples e especiais, como /ab*c/ ou /Capitulo (\d+)\.\d*/. O último exemplo contém parênteses, que são usados como um mecanismo de armazenamento. A correspondência feita por essa parte da expressão é armazenada para uso posterior, como descrito em: Using Parenthesized Substring Matches.
Uso de Padrões Simples
Padrões simples são construídos utilizando os caracteres que você deseja encontrar correspondências diretas. Por exemplo, o padrão /abc/ encontra combinações de caracteres em strings apenas quando os caracteres 'abc' forem encontrados juntos e na ordem especificada. Esse padrão será encontrado com sucesso nas strings "Olá, você conhece o abc?" e "Os mais recentes aviões evoluíram do slabcraft.". Em ambos os casos, a correspondência estará no subconjunto 'abc'. Porém, o padrão não será encontrado no texto "Grab crab" pois apesar de conter os mesmos caractes do padrão 'ab c', estes não aparecem na ordem especificada.
Uso dos Caracteres Especiais
Quando for necessário buscar algo além de uma correspondência direta, como encontrar uma ou mais ocorrências da letra 'b', ou encontrar espaços em branco, será necessário adicionar caracteres especiais ao padrão. Por exemplo, para encontrar uma única correspondência de 'a' seguido de nenhum ou mais 'b's seguido de 'c', o padrão a utilizar seria /ab*c/. O caractere * seleciona zero ou mais ocorrências do item que o precede. Se aplicada ao texto 'cbbabbbbcdebc', essa expressão regular encontraria o subconjunto grifado no texto.
A tabela abaixo fornece uma lista completa dos caracteres especiais que podem ser utilizados nas expressões regulares, com sua respectiva descrição. Para testar os exemplos de expressão regular você pode usar o regExr.
Caracteres especiais utilizados em expressões regulares. Caractere Descrição
\
Aplicado conforme as seguintes regras:
Uma barra invertida que preceda um caractere não especial significa que o caractere seguinte é especial e não deve ser interpretado de forma literal. Por exemplo, o caractere 'b' quando não precedido de uma barra invertida significará uma ocorrência do próprio caractere 'b' minúsculo, porém se precedido da barra invertida '\b' ele passará a significar a ocorrência do caractere especial fronteira do caractere.
Quando a barra invertida preceder um caractere especial isso significará que o próximo caractere deve ser interpretado de forma literal. Por exemplo o padrão /a*/, que selecionará a ocorrência de zero ou mais caracteres 'a' quando utilizado sem a \ para escape. Por outro lado no padrão /a\*/ o asterisco deixa de ter seu significado especial, pois a '\' de escape fará com que o '*' seja interpretado de forma literal, passando o padrão a selecionar o caractere 'a' seguido do caractere '*'.
Quando utilizar o construtor RegExp("padrao"), não se esqueça de fazer o escape do caractere \, já que esse caractere é também utilizado como caractere de escape em strings.
^
Corresponde ao início do texto. Se a flag multilinhas é setada para true, também se aplica imediatamente após um caractere de quebra de linha.
Por exemplo, /^A/ não corresponde ao 'A' em "Um Alvo", mas corresponde ao 'A' em "Alvo Encontrado".
Este caractere tem um significado diferente quando aparece como o primeiro caractere em um conjunto padrão de caracteres. Veja conjunto de caracteres negados ou complementados para detalhes e mais exemplos.
$
Corresponde ao final do texto. Se a flag multilinhas é setada para true, também se aplica imediatamente antes de um caractere de quebra de linha.
Por exemplo, /r$/ não corresponde ao 'r' em "corre", mas acha correspondência em "correr".
*
Corresponde a expressão que o precede repetida 0 ou mais vezes. Equivalente a {0,}
Por exemplo, /bo*/ acha uma correspondência para 'boooo' em "Scoob doo" e 'b' em "A bird warbled", mas nenhuma em "A goat grunted".
+
Corresponde a expressão que o precede repetido 1 ou mais vezes. Equivalente a {1,}.
Por exemplo, /a+/ acha correspondência para o 'a' em "candy" e todos os "as" em "caaaaaaandy", mas nâo encontra em "cndy".
?
Corresponde a expressão que o precede repetido 0 ou 1 vez. Equivalente à {0,1}.
Por exemplo, /e?le?/ encontra o 'el' em "angel" e o 'le' em "angle" e também o 'l' em "oslo".
Se usado imediatamente após qualquer um dos quantificadores *, +, ? ou {}, faz o quantificador não guloso (combinando o número mínimo de vezes), como um oposto para o padrão que é guloso (combinar o número máximo possível). Por exemplo, aplicando /\d+/ em "123abc" encontra "123". Mas aplicando /\d+?/, apenas "1" será encontrado.
Também usado em declarações lookahead, descritas sob x(?=y) e x(?!y)logo abaixo na tabela.
.
(O ponto decimal) corresponde com qualquer caracter, exceto o caracter de nova linha.
Por exemplo, /.n/ acha correspondência para o 'an' e 'on' em "nove dias restantes para onze de agosto.", mas não encontra 'no' em 'nove'.
(x)
Leia mais em:
t.wikipedia.org/wiki/Express%...
Última atualização: 2023-02-15